#pragma once

#include "Misc/EngineEditorMacros.h"
#include "Object/Object.h"
#include "Math/Math.h"
#include "MaterialGraph/MaterialGraphValueType.h"
#include "MaterialGraphPinView.m.h"


class RMaterialGraphPinViewModel;
class RWidget;

RCLASS()
class RMaterialGraphPinView : public RObject
{
    ROBJECT

public:
    virtual void BindViewModel(TSharedObjectPtr<RMaterialGraphPinViewModel> InModel);
    virtual void CreateWidget(TSharedObjectPtr<RWidget> InNodeWidget,TSharedObjectPtr<RWidget> InParent) ;

    // float GetDefaultVector1DValue() const;
    // void SetDefaultVector1DValue(float InValue);

    // SVec2 GetDefaultVector2DValue() const;
    // void SetDefaultVector2DValue(const SVec2& InValue);

    // SVec3 GetDefaultVector3DValue() const;
    // void SetDefaultVector3DValue(const SVec3& InValue);

    // SVec4 GetDefaultVector4DValue() const;
    // void SetDefaultVector4DValue(const SVec4& InValue);

    SVec4 GetDefaultXYZW() const;

    bool HasValidLink() const;
protected:
    TSharedObjectPtr<RMaterialGraphPinViewModel> BaseViewModel;

};